home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / cmds / head / head.c < prev    next >
Encoding:
C/C++ Source or Header  |  1988-07-21  |  1.8 KB  |  74 lines

  1. /*
  2.  * Copyright (c) 1980, 1987 Regents of the University of California.
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms are permitted
  6.  * provided that this notice is preserved and that due credit is given
  7.  * to the University of California at Berkeley. The name of the University
  8.  * may not be used to endorse or promote products derived from this
  9.  * software without specific prior written permission. This software
  10.  * is provided ``as is'' without express or implied warranty.
  11.  */
  12.  
  13. #ifndef lint
  14. char copyright[] =
  15. "@(#) Copyright (c) 1980, 1987 Regents of the University of California.\n\
  16.  All rights reserved.\n";
  17. #endif /* not lint */
  18.  
  19. #ifndef lint
  20. static char sccsid[] = "@(#)head.c    5.3 (Berkeley) 4/19/88";
  21. #endif /* not lint */
  22.  
  23. #include <stdio.h>
  24. #include <ctype.h>
  25. /*
  26.  * head - give the first few lines of a stream or of each of a set of files
  27.  *
  28.  * Bill Joy UCB August 24, 1977
  29.  */
  30.  
  31. main(argc, argv)
  32.     int    argc;
  33.     char    **argv;
  34. {
  35.     register int    ch, cnt;
  36.     int    firsttime, linecnt = 10;
  37.  
  38.     if (argc > 1 && argv[1][0] == '-') {
  39.         if (!isdigit(argv[1][1])) {
  40.             fprintf(stderr, "head: illegal option -- %c\n", argv[1][1]);
  41.             goto usage;
  42.         }
  43.         if ((linecnt = atoi(argv[1] + 1)) < 0) {
  44. usage:            fputs("usage: head [-line_count] [file ...]\n", stderr);
  45.             exit(1);
  46.         }
  47.         --argc; ++argv;
  48.     }
  49.     /* setlinebuf(stdout); */
  50.     for (firsttime = 1, --argc, ++argv;; firsttime = 0) {
  51.         if (!*argv) {
  52.             if (!firsttime)
  53.                 exit(0);
  54.         }
  55.         else {
  56.             if (!freopen(*argv, "r", stdin)) {
  57.                 fprintf(stderr, "head: can't read %s.\n", *argv);
  58.                 exit(1);
  59.             }
  60.             if (argc > 1) {
  61.                 if (!firsttime)
  62.                     putchar('\n');
  63.                 printf("==> %s <==\n", *argv);
  64.             }
  65.             ++argv;
  66.         }
  67.         for (cnt = linecnt; cnt; --cnt)
  68.             while ((ch = getchar()) != EOF)
  69.                 if (putchar(ch) == '\n')
  70.                     break;
  71.     }
  72.     /*NOTREACHED*/
  73. }
  74.